package com.rookieci.utils;

import android.app.Activity;
import android.content.ClipData;
import android.content.ClipDescription;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;

import com.rookieci.lib.BuildConfig;

/**
 * Created by Administrator on 2016/11/20.
 */
public class OtherUtils {
    /**
     * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
     */
    public static int dp2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

    /**
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
     */
    public static int px2dp(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }

    /**
     * sp转px的方法。
     */
    public static int sp2px(Context context, float spValue) {
        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue * fontScale + 0.5f);
    }

    public static void callTel(Context context, String telStr) {
        Uri uri = Uri.parse("tel:" + telStr);
        callTel(context, uri);
    }

    public static void callTel(Context context, Uri uri) {
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_DIAL);
        intent.setData(uri);
        if (!(context instanceof Activity)) {
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        }
        try {
            context.startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 加密电话号码中间部分
     */
    public static String guardPhone(String phone) {
        if (phone != null && phone.length() == 11) {
            try {
                long i = Long.parseLong(phone);
                if (i > 0) {
                    phone = phone.substring(0, 3) + "****" + phone.substring(7, phone.length());
                }
            } catch (Exception e) {
                //if (BuildConfig.DEBUG) e.printStackTrace();
            }
        }
        return phone;
    }

    /**
     * 复制文字到剪切板
     */
    public static void copyText(Context context, String text) {
        ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
        if (cm == null) return;
        // 将文本内容放到系统剪贴板里。
        ClipData clipData = ClipData.newPlainText("RookieCi", text);
        cm.setPrimaryClip(clipData);
    }

    /**
     * 取剪切板
     */
    public static CharSequence getCopyText(Context context) {
        return getCopyText(context, true);
    }

    /**
     * @param isReadMe 读取内容 是否包含本APP的
     */
    public static CharSequence getCopyText(Context context, boolean isReadMe) {
        ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
        ClipData clipData = cm == null ? null : cm.getPrimaryClip();
        if (clipData == null) return null;
        if (!isReadMe) {
            ClipDescription description = clipData.getDescription();
            if (description != null) {
                CharSequence label = description.getLabel();
                if (label != null) {
                    String s = label.toString();
                    if ("RookieCi".equals(s)) return null;
                }
            }
        }
        return clipData.getItemAt(0).getText();
    }

    /**
     * 清空剪贴板内容
     */
    public static void clearClipboard(Context context) {
        ClipboardManager manager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
        if (manager != null) {
            try {
                manager.setPrimaryClip(manager.getPrimaryClip());
                manager.setText(null);
            } catch (Exception e) {
                if (BuildConfig.DEBUG) e.printStackTrace();
            }
        }
    }
}
